<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script crossorigin src="../js/react.production.min.js"></script>
    <!-- 核心库  最先引用 -->
    <script crossorigin src="../js/react-dom.production.min.js"></script>
    <!-- 引用react-dom 用于支持react操作DOM -->
    <script crossorigin src="../js/babel.min.js"></script>
    <!-- 引入babel 用于将jsx转为js -->
    <title>学习react</title>
</head>

<body>
    <div id="test"></div>
    <div id="test1"></div>
    <script type="text/babel"> // 此处一定要写babel



        //函数式组件 首字母大写 必须有返回值
        function Demo(){
            // console.log(this);  // 此处是undefined
            return <h1>函数式组件</h1>
        }
        ReactDOM.render(<Demo/>, document.getElementById("test"));
        /*
            解析组件标签 找到组件
            发现组件是用函数定义的，随后调用该函数，将返回的虚拟DOM转为真实DOM，呈现在页面上
        */ 
    


        // 类式组件  必须继承React.Component
        class MyDemo extends React.Component{
            render(){ //render()必须写  必须有返回值
                console.log(this); //this是MyDemo组件实例对象 
                // 组件实例的三大核心属性 props refs state
                return <h1>类式组件</h1>
            }
        }
        ReactDOM.render(<MyDemo/>, document.getElementById("test1"));
        /*
            解析组件标签 找到组件
            发现组件是用类定义的，随后new出来该实例，并通过该实例调用到原型的render方法
            将render返回的虚拟DOM转为真实DOM，呈现在页面上
        */ 
    </script>
</body>

</html>